/*
 * @Author: xiaosihan 
 * @Date: 2021-04-06 23:34:53 
 * @Last Modified by: xiaosihan
 * @Last Modified time: 2021-04-10 15:40:11
 */


import { CleanWebpackPlugin } from 'clean-webpack-plugin';
import webpack from 'webpack';
import webpackUtils from './webpackUtils.js';


export default function (env) {

    return {
        mode: 'production',
        entry: {
            // 你想要打包的模块的数组
            vendor: [
                'antd',
                'axios',
                'dayjs',
                'element-resize-event',
                "get-browser-info",
                'history',
                'lodash',
                'react',
                'mobx',
                'mobx-react',
                'react-dom',
                'react-router',
                'react-router-dom'
            ]
        },
        optimization: {
            minimize: true // 压缩
        },
        performance: {
            hints: false // 每个文件是否限制大小
        },
        module: {
            rules: [
                webpackUtils.cssLoader,// css 加载器
                webpackUtils.lessLoader, // less 加载器
                webpackUtils.jsLoader, // js 加载器
                webpackUtils.tsLoader, // ts 加载器
                webpackUtils.workerLoader, // 多线程加载器
                webpackUtils.flieLoader // 其他文件加载器
            ]
        },
        output: {
            path: webpackUtils._path('../vendor'), // 打包后文件输出的位置
            filename: '[name].dll.js',
            library: '[name]_library' // 全局变量的名字
        },
        plugins: [
            ...webpackUtils.plugins,
            new CleanWebpackPlugin({
                root: webpackUtils._path('../vendor') // 删除vendor
            }),
            new webpack.DllPlugin({
                path: webpackUtils._path('../vendor/[name]-manifest.json'),
                name: '[name]_library', // 全局变量的名字同上保持一致
                context: __dirname
            })
        ]
    }
}
